package tony.web.auth

import java.time.Duration
import java.time.LocalDateTime

/**
 * 身份认证服务
 * @author tangli
 * @date 2025/09/08 13:22
 */
public interface IAuthService<in T> {
    /**
     * token 期限长度
     */
    public val expiredIn: Duration

    /**
     * token
     * @param [params] 参数
     * @return [String]
     * @author tangli
     * @date 2025/09/09 13:57
     */
    public fun token(params: T): String

    /**
     * 过期时间
     * @return [LocalDateTime]
     * @author tangli
     * @date 2025/09/09 14:05
     */
    public fun expiredAt(): LocalDateTime =
        LocalDateTime.now().plusMinutes(expiredIn.toMinutes())
}
